<?php
class db{
    private $str;
    private $config;
    private $data = Array();
    public function __construct(){
        $this->config = new config();
    }
    
    public function autorun(){
    
    }
    //Open connection 
    public function openconnection(){
        require_once("config.php");
        $this->str = mysql_connect($this->config->server, $this->config->user, $this->config->pass);
        if (!$this->str) {
            die('Lỗi truy cập: ' . mysql_error());
        }
        mysql_select_db($this->config->database);
    } 
    //Close connection 
    public function closeconnection(){
        mysql_close($this->str);
    }
    //Run query string
    public function run_query($str){
       $result =  mysql_query($str);
       $this->data=null;
       while($row = @mysql_fetch_array($result)) {
            $this->data[] = $row;          
        } 
        $result=null;
       return $this->data;
        
    }
    //Run query if select from multi table and select by ID
     public function run_query_multi_table($str){
       $result =  mysql_query($str);
       
       return @mysql_fetch_array($result);
        
    }
    //Run insert query
    public function run_insert_query($str){
       $result =  mysql_query($str);
       $result_id = mysql_insert_id();
       //print(mysql_error());
       $result=null;   
       return $result_id;
        
    }
    //Function Select data
    public function run_select_data($table_name='album',$order='id'){
        $this->data = null;
        $str = "SELECT * FROM $table_name Order by $order";
         $result =  mysql_query($str);
           while($row = @mysql_fetch_array($result)) {
                $this->data[] = $row;          
            } 
         $result=null;
         return $this->data;       
    }
    //Function Select by ID
    public function run_select_by_id($table_name='album',$id='1'){
        $str = "SELECT * FROM $table_name WHERE id=$id";
         $result =  mysql_query($str);
         return @mysql_fetch_array( $result );
    }
    /**
     * IsRow Trả về giá trị kiểu bool dựa theo câu truy vấn có kết quả hay không
     * @param string $sql, câu lệnh truy vấn
     * @return trả về false nếu kết quả tìm thấy là 0 dònd, nếu kết quả > dòng sẽ trả về true.
     */
    function IsRow($sql)
    {
        if(isset($this->conn))        {
            $result=mysql_query($sql,$this->conn) or die("Not query fns_IsRecord");
        }
        else{
            $result=mysql_query($sql) or die("Not query fns_IsRecord23232");
        }
        if(mysql_num_rows($result)) return true;
        else return false;
    }
    /**
     * Trả về mảng các dòng từ câu lệnh selecy
     * @param string $sql, sql slệnh truy vấn cần xử lý
     * @return trả về mảng các dòng với khóa là các field
     */
    function NumRow($sql)
    {
        if(isset($this->conn)){
            $result=mysql_query($sql,$this->conn) or die("Not query fns_IsRecord");
        }
        else{
            $result=mysql_query($sql) or die("Not query fns_IsRecord");
        }

        $r=mysql_fetch_array($result,MYSQL_NUM);
        return $r[0];
    }
    /**
     * Trả về 1 mảng được sẽ đựoc thao tác boiử lớp smarty dùng cho section hoặc foreach
     * @param string $sql, câu lệnh truy vấn
     * @param string $numrow
     * @return trả về mảng có dạng array(array()[,array()])
     */
    function GetRowsAndCount($sql,$numrow)
    {
        echo $sql;
        $result=mysql_query($sql) or die("Not query fns_IsRecord");
        $numrow=mysql_num_rows($result);
        $rows=array();
        while($r=mysql_fetch_array($result)){
            $rows[]=$r;
        }
        return $rows;
    }
    /**
     * Return 2 arrays dựoc hỗ trợ bởi smarty html_option
     * @param string $sql, câu lệnh sql
     * @param string $Field1, trườnd đầu tien của bảng bên trong câu lệnh sql
     * @param string $numrow, trường thứ 2 của bảng trong câu lệnh sql
     * @param string $rs1, kết quả của việc xử lý $Field1
     * @param string $rs2, kết quả của việc xử lý $Field2
     * @return trả về mảng gồm các phần tử chứa $rs1, $rs2
     */
    function RowsFields($sql,$Field1,$Field2,&$rs1,&$rs2)
    {
        $result=mysql_query($sql) or die("Not query fns_Rows");
        $rs1=array();
        $rs2=array();
        while($r=mysql_fetch_array($result))
        {
            $rs1[]=$r[$Field1];
            $rs2[]=$r[$Field2];
        }
        return $result;
    }
    /**
     * Trả về trạng thái -1, 0, 1 của việc xử lý tham số đầu vào
     * @param string $sql, câu lệnh sql
     * return     0: nếu thành công
     *         -1: nếu sai
     *         1: nếu sai
     * @return -1 hoặc 0 hoặc 1
     */
    function Execute($sql)
    {
        try{
        $result=mysql_query($sql);
        }
        catch(Exception $e)
        {
        return -1;
        }
        if($result)
            return 0;
        else
            return 1;
    }    
    function affectedRows()
    {
        try{
            return mysql_affected_rows();            
        }catch (    Exception $e){
            return -1;
        }
        
    }
     /**
     * trả về mảng đựoc hỗ trợ bởi các vòng lắp trong smarty(section or foreach)
     * @param string $sql, câu lệnh truy vấn
     * @return trả về mảng có dạng array(array()[,array()])
     */
    function Rows($sql)
    {
        if(isset($this->conn)){
            $result=mysql_query($sql,$this->conn) or die("Not query fns_Rows");
        }
        else{
            $result=mysql_query($sql) or die("Not query fns_Rows");
        }
        $rows=array();
        while($r=mysql_fetch_array($result)){
            $rows[]=$r;
        }
        return $rows;
    }
   /**
     * trả về mảng dũ liệu truy vấn từ câu select
     * @param string $sql, câu lệnh truy vấn
     * @param string $Field,tên trường trong câu lệnh truy vấn
     * @return trả về mảng
     */
    function RowsField($sql,$Field)
    {
        $result=mysql_query($sql) or die("Not query fns_Rows");
        $rows=array();
        while($r=mysql_fetch_array($result))
        {
            $rows[]=$r[$Field];
        }
        return $rows;
    }
    /**
     * getNumRows trả về số dòng truy vấn được từ kết quả truy vấn
     * @param string $sql, câu lệnh truy vấn
     * @return trả về tổng dòng tuy vấn được
     */
    function getNumRows($sql)
    {
        $result = mysql_query($sql);
        if($result)
        {
            return mysql_num_rows($result);
        }
    }
    /**
     * getTbConstRows trả về tất cả thông tin cấu hình
     * @param string $name, tên kiểu thông tin
     * @return trả về thông tin câus hình
     */
    function getTbConstRows($name)
    {
        $sql = "SELECT * FROM tb_const WHERE Name = '$name' ";
        $obj = $this->getObject($sql);
        return $obj;
    }    
    /**
     * trả về id của bản ghi được insert gần nhất
    * @param không tham s
    * @return id của bản ghi vừa đựoc insert
     */
    function getInsertId()
    {
        return mysql_insert_id();
    }
    /*
    *execute query and return
    */
    function queryResult($sql)
    {    
        return mysql_query($sql);
    }
    
      
}
?>
